/*
 *  Лицензия MIT
 * 
 *  Copyright 2011 Salnikov Aleksey.
 * 
 *  Данная лицензия разрешает, безвозмездно, лицам, получившим копию данного программного обеспечения
 *  и сопутствующей документации (в дальнейшем именуемыми "Программное Обеспечение"),
 *  использовать Программное Обеспечение без ограничений, включая неограниченное право
 *  на использование, копирование, изменение, объединение, публикацию, распространение,
 *  сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам,
 *  которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
 * 
 *  Вышеупомянутый копирайт и данные условия должны быть включены во все копии или значимые
 *  части данного Программного Обеспечения.
 * 
 *  ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ ЛЮБОГО ВИДА ГАРАНТИЙ,
 *  ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ,
 *  СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И НЕНАРУШЕНИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ
 *  НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ
 *  ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ
 *  С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
 *  ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
 */

package look;

import CommonTools.Actions;
import CommonTools.Admin;
import CommonTools.Demand;
import CommonTools.DemandsTModel;
import CommonTools.DesignTools;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JToolBar;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import look.elements.DemandPanel;
import look.elements.DemandTablePanel;

/**
 * Класс окна просмотра заявок
 *
 * @author Salnikov Aleksey
 */
public class DemandsWindow extends DemWindow{

    JToolBar toolBar;
    JButton refreshB, deleteB, previousB, nextB, helpB, preferencesB;
    protected boolean isRoot;
    protected DemandPanel demandPanel;
    protected DemandTablePanel demandTable;

    public DemandsWindow() throws RemoteException
    {
        super("Заявки | Client Ordo");
        //isRoot = this.admin.getLogin().equals("root");

        /*******************************************************
         * Иконка для окна
         ******************************************************/
        ImageIcon iconWindow = new ImageIcon("images/icon.png");
        this.setIconImage(iconWindow.getImage());

        /********************************************************
         * Настройка менеджера компоновки и создание компонентов
         * для его использования
         *******************************************************/
        Container c = this.getContentPane();
        c.setLayout(new BorderLayout());
        //JPanel mainPanel = new JPanel(new GridBagLayout());
        //c.add(mainPanel, BorderLayout.CENTER);
        //GridBagConstraints gbc = new GridBagConstraints();
       // GridBagConstraints rightTopGbc = new GridBagConstraints();
       // GridBagConstraints rightButtonGbc = new GridBagConstraints();

        //JSplitPane horSplit = new JSplitPane();
        //horSplit.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
        

        //JSplitPane verSplit = new JSplitPane();
        //verSplit.setOrientation(JSplitPane.VERTICAL_SPLIT);
        //horSplit.setRightComponent(verSplit);
        //c.add(verSplit, BorderLayout.CENTER);
        /*******************************************************
         * Создаем визуальные компоненты и размещаем их
         * Тулбар
         ******************************************************/
        toolBar = new JToolBar();
        toolBar.setFloatable(false);
        c.add(toolBar, BorderLayout.NORTH);

        ImageIcon iconPrevious = new ImageIcon("images/previous.png");
        previousB = new JButton();
        previousB.setIcon(iconPrevious);
        previousB.setToolTipText("Предыдущая заявка");
        previousB.setFocusable(false);
        toolBar.add(previousB);

        ImageIcon iconNext = new ImageIcon("images/next.png");
        nextB = new JButton();
        nextB.setIcon(iconNext);
        nextB.setToolTipText("Следующая заявка");
        nextB.setFocusable(false);
        toolBar.add(nextB);

        JSeparator sep = new JSeparator();
        sep.setOrientation(sep.VERTICAL);
        toolBar.add(sep);

        ImageIcon iconRefresh = new ImageIcon("images/refresh.png");
        refreshB = new JButton();
        refreshB.setIcon(iconRefresh);
        refreshB.setToolTipText("Обновить заявки");
        refreshB.setFocusable(false);
        toolBar.add(refreshB);

        /*****************************************************************
         * Создаем левую панельку
         ***************************************************************
         leftPanel = new LeftDemandPanel(this.admin);
         horSplit.setLeftComponent(leftPanel);*/

         this.demandTable = new DemandTablePanel();
         //verSplit.setTopComponent(demandTable);
         //verSplit.setResizeWeight(0.7);
         this.add(new JScrollPane(demandTable), BorderLayout.CENTER);

         Actions.refreshDemandsTable(demandTable.getTable());

         //leftPanel.setTable(demandTable.getTable());
         //leftPanel.setAdmin(this.admin);

         //demandPanel = new DemandPanel();
         //demandPanel.setTable(demandTable.getTable());
         //verSplit.setBottomComponent(demandPanel);

         /****************************************************************
          * Привязываем события
          **************************************************************/
         refreshB.addActionListener(new ActionListener()
             {
                public void actionPerformed(ActionEvent e)
                {
                try {
                    refreshDemands();
                } catch (RemoteException ex) {
                    DesignTools.showMessage("Сообщение не отправлено", "Возможно, отключен сервер, или неверные настройки\n"
                        + "ip адреса сервера и порта. Пожалуйста, проверьте их.", false);
                }
                }
             });

         nextB.addActionListener(new ActionListener()
             {
                public void actionPerformed(ActionEvent e)
                {
                    nextDemand();
                }
             });

         previousB.addActionListener(new ActionListener()
             {
                public void actionPerformed(ActionEvent e)
                {
                    previousDemand();
                }
             });

        //this.pack();
        //this.validate();
        this.setVisible(true);
    }

    /*******************************************************
     * Основные процедуры интерфейса
     ******************************************************/

    //Нажатие на кнопку обновления
    protected void refreshDemands() throws RemoteException
    {
        //JTable table = demandTable.getTable();
        //Actions.refreshDemandsTable(table);
        Actions.refreshDemandsTable(demandTable.getTable());
    }



    //Нажатие кнопки следующей заявки
    protected void nextDemand()
    {
        JTable table = demandTable.getTable();
        int i = table.getSelectedRow();

        if (i < table.getRowCount()-1)
            i++;
        else
            i = 0;

        table.getSelectionModel().setLeadSelectionIndex(i);
    }

    //Нажатие кнопки предыдущей заявки
    protected void previousDemand()
    {
        JTable table = demandTable.getTable();
        int i = table.getSelectedRow();

        if (i > 0)
            i--;
        else
            i = table.getRowCount()-1;

        table.getSelectionModel().setLeadSelectionIndex(i);
    }

}
